package recursivos;

import numerosException.NumerosTeclado;

public class Fibonacci {

	private void imprimirFibonacciIterativo() {
		System.out
				.println("Introduzca el numero de terminos que desea mostrar....");
		int numeroTerminos = NumerosTeclado.pedirEntero();
		System.out.print("1\t");
		if (numeroTerminos > 1) {
			int primero = 1;
			int segundo = 1;
			int aux;
			for (int i = 0; i < numeroTerminos - 1; i++) {
				System.out.print(segundo + "\t");
				aux = primero;
				primero = segundo;
				segundo = aux + primero;
			}
		}
	}
	
	

	private static int fibonacciRecursivo(int numeroTerm) {
		if (numeroTerm < 2) {
			return 1;
		} else {
			return fibonacciRecursivo(numeroTerm - 1)
					+ fibonacciRecursivo(numeroTerm - 2);
		}

	}

	private static void imprimirFibonacciRecursivo() {
		System.out
				.println("Introduzca el numero de terminos que desea mostrar....");
		int numeroTerminos = NumerosTeclado.pedirEntero();

		for (int i = 0; i < numeroTerminos; i++) {
			System.out.print(fibonacciRecursivo(i) + "\t");
		}
		System.out.println();

	}
	
	

	public static void main(String[] args) {

		imprimirFibonacciRecursivo();

		Fibonacci objetoFibo = new Fibonacci();
		objetoFibo.imprimirFibonacciIterativo();

	}

}
